package com.huiyeji.idempotent;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author zhaoduo
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Idempotent {

    /**
     * 接口组
     * @return
     */
    String group() default "";

    /**
     * 接口幂等性持续时间
     * @return
     */
    int expireSeconds() default 60;

    /**
     * 幂等性-key-生成配置
     * @return key
     */
    Class<? extends KeyGenerator> keyGenerator() default MD5KeyGenerator.class;

    /**
     * 幂等性校验失败抛错类型
     * @return
     */
    Class<? extends Throwable> exceptionType() default RuntimeException.class;

    /**
     * 幂等性校验失败抛错信息
     * @return
     */
    String exceptionMessage() default "接口幂等性校验失败";
}
